﻿/**
* 塔罗即时抓取插件，包括了整个与后台交互流程RealTimeCrawlAction
* api
* 1、FDCCrawl.crawlAllPlaneInfosByCompany  抓取【某个】公司【某天】【某条航线】的【所有】航班
* 2、FDCCrawl.crawlLowestPlaneInfoByCompany 抓取【某个】公司【某天】【某条航线】的【最低价】航班（仅仅只有一条）
* 
* 
* 调用demo如下
* 	function test(){
*		var d={
*			depCity:'北京(PEK)',
*			arrCity:'广州',
*			flightDate:'2013-08-01',//起飞日期
*			carrierKey:'ZH'//公司的key，所有的参数跟action对应就可以了
*		};
*		FDCCrawl.crawlAllPlaneInfosByCompany(
*			d,//发送到后台的参数
*			function(p){},//发送前调用，p为下面的“自带参数”，是什么类型都可以的一个自己相放入什么都可以
*			function(d,p){alert(d.status)},//完成后调用，d.status='error'或者'success',表示成功或者失败。d.data=结果,action过来的是什么就是什么 。d.error=错误信息（如果有）
*			'<%=request.getContextPath() %>',//项目地址，固定这个就好了
*			'自带参数');//自带参数，什么都可以，可以作为标志位来用的
*	}
* 
*/
(function($){
	var obj=window["FDCCrawl"]={};
	var timeout=180000;
	
	obj.crawlAllPlaneInfosByCompany=function(d,beginFun,endFun,url,p){
		var URL=url+"/crawl/realtime/crawlAllPlaneInfosByCompany.action";
		_load(d,beginFun,endFun,URL,p);
	};
	
	obj.crawlLowestPlaneInfoByCompany=function(d,beginFun,endFun,url,p){
		var URL=url+"/crawl/realtime/crawlLowestPlaneInfoByCompany.action";
		_load(d,beginFun,endFun,URL,p);
	};
	//获取数据
	function _load(d,beginFun,endFun,URL,p){
		var finalResult={};
		d=d?d:{};
		$.ajax({
			type:'post',
			data:d,
			async:true,
			dataType:"json",
			cache:false,
			timeout:timeout,
			url:URL,
			beforeSend:function(XMLHttpRequest){
				if(beginFun){beginFun(p);}
			},
			error:function(XMLHttpRequest, textStatus, errorThrown){//state:error
				finalResult.error=errorThrown;
			},
			success:function(data, textStatus){//status:success
				finalResult.data=data;
			},
			complete:function (XMLHttpRequest, textStatus) {//不管成功失败，总会调用complete方法
				finalResult.status=textStatus;
				if(finalResult.status!='success'){
					finalResult.status='error';
				}
				if(endFun){
					endFun(finalResult,p);//回调函数
				}
			}
		});
	}
})(jQuery);






